#pragma once
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#define debug 0

using namespace cv;

struct MYComplex {
	double r, i;
	MYComplex() { r = 0, i = 0; }
	MYComplex(double real, double imag) : r(real), i(imag) {}

};
void FFT(MYComplex* a, int opt, int n);
// void FFTshift(std::vector<cv::Mat>& src);
void FFTshift(std::vector<std::vector<std::vector<float>>>& src);
// void FFT2D(int height, int width, int opt, std::vector<Mat>& src, std::vector<Mat>& dst);
void FFT2D(int height, int width, int opt, std::vector<std::vector<std::vector<float>>>& src, std::vector<std::vector<std::vector<float>>>& dst);
